From: Aryeh Gregor Date: Fri, 13 Aug 2010 21:39:51 +0000 (+0000) Subject: Revert r70960 "AjaxDispatcher, now ~30 lines shorter and not using $_GET or $_POST" X-Git-Tag: 1.31.0-rc.0~35500 X-Git-Url: http://git.cyclocoop.org/%7D%7Cconcat%7B?a=commitdiff_plain;h=a6aac77d16bb7d5683bc7f67ac96f88e6ab177e3;p=lhc%2Fweb%2Fwiklou.git Revert r70960 "AjaxDispatcher, now ~30 lines shorter and not using $_GET or $_POST" Broke CategoryTree, see code review for the error message. --- diff --git a/includes/AjaxDispatcher.php b/includes/AjaxDispatcher.php index 969efa4790..16e5301180 100644 --- a/includes/AjaxDispatcher.php +++ b/includes/AjaxDispatcher.php @@ -18,23 +18,51 @@ require_once( 'AjaxFunctions.php' ); * @ingroup Ajax */ class AjaxDispatcher { + /** The way the request was made, either a 'get' or a 'post' */ + private $mode; + /** Name of the requested handler */ - private $func_name = null; + private $func_name; /** Arguments passed */ - private $args = array(); + private $args; /** Load up our object with user supplied data */ - public function __construct( WebRequest $req ) { + function __construct() { wfProfileIn( __METHOD__ ); - $rs = $req->getVal( 'rs' ); - if( $rs !== null ) { - $this->func_name = $rs; + $this->mode = ""; + + if ( ! empty( $_GET["rs"] ) ) { + $this->mode = "get"; } - $rsargs = $req->getVal( 'rsargs' ); - if( $rsargs !== null ) { - $this->args = $rsargs; + + if ( !empty( $_POST["rs"] ) ) { + $this->mode = "post"; + } + + switch( $this->mode ) { + case 'get': + $this->func_name = isset( $_GET["rs"] ) ? $_GET["rs"] : ''; + if ( ! empty( $_GET["rsargs"] ) ) { + $this->args = $_GET["rsargs"]; + } else { + $this->args = array(); + } + break; + case 'post': + $this->func_name = isset( $_POST["rs"] ) ? $_POST["rs"] : ''; + if ( ! empty( $_POST["rsargs"] ) ) { + $this->args = $_POST["rsargs"]; + } else { + $this->args = array(); + } + break; + default: + wfProfileOut( __METHOD__ ); + return; + # Or we could throw an exception: + # throw new MWException( __METHOD__ . ' called without any data (mode empty).' ); } wfProfileOut( __METHOD__ ); @@ -48,7 +76,7 @@ class AjaxDispatcher { function performAction() { global $wgAjaxExportList, $wgOut; - if ( is_null( $this->func_name ) ) { + if ( empty( $this->mode ) ) { return; } diff --git a/index.php b/index.php index 9f45c59172..dcea36b5b7 100644 --- a/index.php +++ b/index.php @@ -68,7 +68,7 @@ wfProfileOut( 'main-misc-setup' ); # if( $wgUseAjax && $action == 'ajax' ) { require_once( $IP . '/includes/AjaxDispatcher.php' ); - $dispatcher = new AjaxDispatcher( $wgRequest ); + $dispatcher = new AjaxDispatcher(); $dispatcher->performAction(); $mediaWiki->restInPeace(); exit;